home *** CD-ROM | disk | FTP | other *** search
/ Risc World 7 / Risc World 7.iso / Software / Issue4 / IYONIX / MANICMINER / SOURCE.ZIP / manicminer-1.6.3 / sndlibs / mikmod / c / snd < prev   
Encoding:
Text File  |  2000-12-05  |  5.0 KB  |  305 lines

  1. #include "../../manic.h"
  2. #include "common.h"
  3.  
  4. void
  5. mm_snd_playmod (int pos)
  6. {
  7.   Player_Start (manicmod);
  8.   Player_SetPosition (pos);
  9. }
  10.  
  11. void
  12. mm_snd_update (void)
  13. {
  14.   MikMod_Update ();
  15. }
  16.  
  17. int
  18. mm_snd_active (void)
  19. {
  20.   return (Player_Active ());
  21. }
  22.  
  23. void
  24. mm_snd_stopmod (void)
  25. {
  26.   Player_Stop ();
  27. }
  28.  
  29. int
  30. mm_snd_getmodpos (void)
  31. {
  32.   return (manicmod->sngpos);
  33. }
  34.  
  35. void
  36. mm_snd_jump (unsigned rate)
  37. {
  38.   if (!Voice_Stopped (voice1))
  39.     Voice_Stop (voice1);
  40.   voice1 = Sample_Play (jump, 0, 0);
  41.   Voice_SetFrequency (voice1, rate);
  42.   Voice_SetPanning (voice1, PAN_CENTER);
  43.   Voice_SetVolume (voice1, 255);
  44. }
  45.  
  46. void
  47. mm_snd_jump2 (unsigned rate)
  48. {
  49.   if (!Voice_Stopped (voice2))
  50.     Voice_Stop (voice2);
  51.   voice2 = Sample_Play (jump, 0, 0);
  52.   Voice_SetFrequency (voice2, rate);
  53.   Voice_SetPanning (voice2, PAN_CENTER);
  54.   Voice_SetVolume (voice2, 255);
  55. }
  56.  
  57. void
  58. mm_snd_pick (unsigned rate)
  59. {
  60.   if (!Voice_Stopped (voice4))
  61.     Voice_Stop (voice4);
  62.   voice4 = Sample_Play (pick, 0, 0);
  63.   Voice_SetFrequency (voice4, rate);
  64.   Voice_SetPanning (voice4, PAN_CENTER);
  65.   Voice_SetVolume (voice4, 255);
  66. }
  67.  
  68. void
  69. mm_snd_die (unsigned rate)
  70. {
  71.   if (!Voice_Stopped (voice3))
  72.     Voice_Stop (voice3);
  73.   voice3 = Sample_Play (die, 0, 0);
  74.   Voice_SetFrequency (voice3, rate);
  75.   Voice_SetPanning (voice3, PAN_CENTER);
  76.   Voice_SetVolume (voice3, 255);
  77. }
  78.  
  79. void
  80. mm_snd_mute (void)
  81. {
  82.   Player_Mute (MUTE_INCLUSIVE, 0, 5);
  83. }
  84.  
  85. void
  86. mm_snd_unmute (void)
  87. {
  88.   Player_Unmute (MUTE_INCLUSIVE, 0, 5);
  89. }
  90.  
  91. unsigned long
  92. mm_snd_hitpianokeys (void)
  93. {
  94. # define KEYS4(A,B,C,D) (1<<(A) | 1<<(B) | 1<<(C) | 1<<(D))
  95. # define KEYS3(A,B,C)   (1<<(A) | 1<<(B) | 1<<(C))
  96. # define KEYS2(A,B)     (1<<(A) | 1<<(B))
  97. # define KEYS1(A)       (1<<(A))
  98.   static const unsigned long keyhit[] ={
  99.     KEYS2(17,17),
  100.     KEYS2(17,17),
  101.     KEYS2(17,17),
  102.     KEYS2(17,17),
  103.     KEYS2(19,19),
  104.     KEYS2(19,19),
  105.     KEYS2(21,21),
  106.     KEYS2(21,21),
  107.     KEYS3(21,21,3),
  108.     KEYS3(21,21,3),
  109.     KEYS2(14,19),
  110.     KEYS2(14,19),
  111.     KEYS4(26,28,14,19),
  112.     KEYS4(26,28,14,19),
  113.     KEYS3(26,28,0),
  114.     KEYS3(26,28,0),
  115.     KEYS2(14,19),
  116.     KEYS2(14,19),
  117.     KEYS4(24,26,14,19),
  118.     KEYS4(24,26,14,19),
  119.     KEYS3(24,26,3),
  120.     KEYS3(24,26,3),
  121.     0,
  122.     0,
  123.     KEYS2(17,17),
  124.     KEYS2(17,17),
  125.     KEYS2(17,17),
  126.     KEYS2(17,17),
  127.     KEYS2(19,19),
  128.     KEYS2(19,19),
  129.     KEYS2(21,21),
  130.     KEYS2(21,21),
  131.     KEYS3(21,21,0),
  132.     KEYS3(21,21,0),
  133.     KEYS2(14,16),
  134.     KEYS2(14,16),
  135.     KEYS4(25,28,14,16),
  136.     KEYS4(25,28,14,16),
  137.     KEYS3(25,28,4),
  138.     KEYS3(25,28,4),
  139.     KEYS2(14,16),
  140.     KEYS2(14,16),
  141.     KEYS4(23,27,14,16),
  142.     KEYS4(23,27,14,16),
  143.     KEYS3(23,27,0),
  144.     KEYS3(23,27,0),
  145.     0,
  146.     0,
  147.     KEYS2(18,18),
  148.     KEYS2(18,18),
  149.     KEYS2(18,18),
  150.     KEYS2(18,18),
  151.     KEYS2(20,20),
  152.     KEYS2(20,20),
  153.     KEYS2(22,22),
  154.     KEYS2(22,22),
  155.     KEYS3(22,22,0),
  156.     KEYS3(22,22,0),
  157.     KEYS2(14,16),
  158.     KEYS2(14,16),
  159.     KEYS4(27,29,14,16),
  160.     KEYS4(27,29,14,16),
  161.     KEYS3(27,29,4),
  162.     KEYS3(27,29,4),
  163.     KEYS2(14,16),
  164.     KEYS2(14,16),
  165.     KEYS4(25,27,14,16),
  166.     KEYS4(25,27,14,16),
  167.     KEYS3(25,27,0),
  168.     KEYS3(25,27,0),
  169.     0,
  170.     0,
  171.     KEYS2(18,18),
  172.     KEYS2(18,18),
  173.     KEYS2(18,18),
  174.     KEYS2(18,18),
  175.     KEYS2(20,20),
  176.     KEYS2(20,20),
  177.     KEYS2(22,22),
  178.     KEYS2(22,22),
  179.     KEYS3(22,22,3),
  180.     KEYS3(22,22,3),
  181.     KEYS2(14,17),
  182.     KEYS2(14,17),
  183.     KEYS4(26,29,14,17),
  184.     KEYS4(26,29,14,17),
  185.     KEYS3(26,29,0),
  186.     KEYS3(26,29,0),
  187.     KEYS2(14,17),
  188.     KEYS2(14,17),
  189.     KEYS4(24,26,14,17),
  190.     KEYS4(24,26,14,17),
  191.     KEYS3(24,26,3),
  192.     KEYS3(24,26,3),
  193.     0,
  194.     0,
  195.     KEYS2(17,17),
  196.     KEYS2(17,17),
  197.     KEYS2(17,17),
  198.     KEYS2(17,17),
  199.     KEYS2(19,19),
  200.     KEYS2(19,19),
  201.     KEYS2(21,21),
  202.     KEYS2(21,21),
  203.     KEYS3(24,24,3),
  204.     KEYS3(24,24,3),
  205.     KEYS2(14,19),
  206.     KEYS2(14,19),
  207.     KEYS4(28,31,14,19),
  208.     KEYS4(28,31,14,19),
  209.     KEYS3(28,31,0),
  210.     KEYS3(28,31,0),
  211.     KEYS2(14,19),
  212.     KEYS2(14,19),
  213.     KEYS4(26,28,14,19),
  214.     KEYS4(26,28,14,19),
  215.     KEYS3(26,28,3),
  216.     KEYS3(26,28,3),
  217.     0,
  218.     0,
  219.     KEYS2(17,17),
  220.     KEYS2(17,17),
  221.     KEYS2(17,17),
  222.     KEYS2(17,17),
  223.     KEYS2(19,19),
  224.     KEYS2(19,19),
  225.     KEYS2(21,21),
  226.     KEYS2(21,21),
  227.     KEYS3(24,24,6),
  228.     KEYS3(24,24,6),
  229.     KEYS2(15,17),
  230.     KEYS2(15,17),
  231.     KEYS4(29,31,15,17),
  232.     KEYS4(29,31,15,17),
  233.     KEYS3(29,31,10),
  234.     KEYS3(29,31,10),
  235.     KEYS2(15,17),
  236.     KEYS2(15,17),
  237.     KEYS4(27,29,15,17),
  238.     KEYS4(27,29,15,17),
  239.     KEYS3(27,29,6),
  240.     KEYS3(27,29,6),
  241.     0,
  242.     0,
  243.     KEYS2(18,18),
  244.     KEYS2(18,18),
  245.     KEYS2(18,18),
  246.     KEYS2(18,18),
  247.     KEYS2(20,20),
  248.     KEYS2(20,20),
  249.     KEYS2(22,22),
  250.     KEYS2(22,22),
  251.     KEYS3(22,22,0),
  252.     KEYS3(22,22,0),
  253.     KEYS4(22,22,14,16),
  254.     KEYS4(22,22,14,16),
  255.     KEYS4(22,22,14,16),
  256.     KEYS4(22,22,14,16),
  257.     KEYS3(22,22,4),
  258.     KEYS3(21,21,4),
  259.     KEYS4(20,20,14,16),
  260.     KEYS4(20,20,14,16),
  261.     KEYS4(21,21,14,16),
  262.     KEYS4(21,21,14,16),
  263.     KEYS4(26,26,3,16),
  264.     KEYS4(26,26,3,16),
  265.     KEYS4(26,26,14,17),
  266.     KEYS4(26,26,14,17),
  267.     KEYS4(26,26,14,17),
  268.     KEYS4(26,26,14,17),
  269.     KEYS3(26,26,0),
  270.     KEYS3(26,26,0),
  271.     KEYS4(24,22,14,17),
  272.     KEYS4(24,22,14,17),
  273.     KEYS4(22,20,14,17),
  274.     KEYS4(22,20,14,17),
  275.     KEYS3(20,18,15),
  276.     KEYS3(20,18,15),
  277.     KEYS2(20,18),
  278.     KEYS2(20,18),
  279.     KEYS2(19,17),
  280.     KEYS2(19,17),
  281.     KEYS4(22,20,0,16),
  282.     KEYS4(22,20,0,16),
  283.     KEYS2(22,20),
  284.     KEYS2(22,20),
  285.     KEYS2(21,19),
  286.     KEYS2(21,19),
  287.     KEYS4(17,14,3,12),
  288.     KEYS2(17,14),
  289.     KEYS2(17,14),
  290.     KEYS3(17,14,3),
  291.     KEYS3(17,14,3),
  292.     KEYS3(17,14,3),
  293.     0,
  294.     0,
  295.     0,
  296.     0,
  297.     0,
  298.     0,
  299.     0
  300.   };
  301.   unsigned position = manicmod->patpos + 64 * manicmod->sngpos - 13 * 64 - 56 - 1;
  302.   return (position < (sizeof (keyhit) / sizeof (unsigned long))) ?
  303.      keyhit[position] :
  304.      0;
  305. }